
#ifndef PACKET_TYPES_H
#define	PACKET_TYPES_H

#include "packet.h"

//

class token : public packet
{
public:
    
    starting_delimiter sd;
    access_control ac;
    ending_delimiter ed;
    
    token(int priority, bool monitor, int reservation);
    
    virtual token *clone();
    
protected:    
    
    bool equals_packet(const packet& pkt);        
    bool equals_token(const token& pkt);         
};


//

class frame : public packet
{
public:
    
    starting_delimiter sd;
    access_control ac;
    frame_control fc;
    destination_address da;
    source_address sa;
    routing_info ri;
    data_field data;
    frame_check_seq fcs;
    frame_status fs;
    ending_delimiter ed;    
    
    virtual frame *clone();
    
protected:
    
    bool equals_packet(const packet& pkt);        
    bool equals_frame(const frame& pkt);    
};


//

class abort_seq : public packet
{
public:
    
    starting_delimiter sd;
    ending_delimiter ed;
    
    virtual abort_seq *clone();
    
protected:
    
    bool equals_packet(const packet& pkt);        
    bool equals_abort_seq(const abort_seq& pkt);    
};


#endif	/* PACKET_TYPES_H */

